package main

import (
	"fmt"
	"time"
)

func main() {

	channel := make(chan int)

	flag := make(chan bool)

	i:=1

	/*
		select语句将被阻塞，直到至少有一个通信可以进行下去。

		如果超过5秒没有接收到信号,那么flag会被标记为true,主程结束
	*/
	go func() {

		for true {

			select {

			case v := <-channel:

				fmt.Println("v ==", v)

			case v := <-time.After(time.Second * 5):

				fmt.Println(v)

				if i < 3 {
					i++
					continue
				}

				flag <- true

				break
			}
		}

	}()

	for i := 0; i < 5; i++ {
		channel <- i

		time.Sleep(time.Second *3)
	}

	<-flag

}
